import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class A<T> {
    T value;
    A(T value) {
        this.value=value;
    }
    T get() {
        return value;
    }
}

class Employee {
    public int id;
    public int importance;
    public List<Integer> subordinates;

    public Employee(int id, int importance, List<Integer> subordinates) {
        this.id = id;
        this.importance = importance;
        this.subordinates = subordinates;
    }
}

public class prog {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer();
        sb.toString()
    }

    public static void main1(String[] args) {
        A<Integer> a=new A<Integer>(10);
        System.out.println(a.get());
    }
}





//class Solution {
//    public List<List<Integer>> shiftGrid(int[][] grid, int k) {
//        int row=grid.length;
//        int col=grid[0].length;
//        int[] arr=new int[row*col];
//        for(int i=0;i<row;i++){
//            for(int j=0;j<col;j++){
//                arr[(i*col+j+k)%(row*col)]=grid[i][j];
//            }
//        }
//        List<List<Integer>> list = new ArrayList<>();
//        int index=0;
//        for(int i=0;i<row;i++){
//            List<Integer> l=new ArrayList<Integer>();
//            for(int j=0;j<col;j++){
//                l.add(arr[index++]);
//            }
//            list.add(l);
//        }
//        return list;
//    }
//}











//class Solution {
//    public int findJudge(int n, int[][] trust) {
//        int[] arr=new int[n+1];
//        for(int[] a :trust){
//            arr[a[0]]--;
//            arr[a[1]]++;
//        }
//        int index=-1;
//        for(int i=1;i<=n;i++){
//            if(arr[i]==n-1){
//                index=i;
//                break;
//            }
//        }
//        return index;
//    }
//}












//class Solution {
//    public boolean canThreePartsEqualSum(int[] arr) {
//        int count=0;
//        for(int a :arr){
//            count+=a;
//        }
//        if(count%3!=0){
//            return false;
//        }
//        int mean=count/3;
//        int sum=0;
//        int i=0;
//        int len=arr.length;
//        while(i<len){
//            sum+=arr[i];
//            if(sum==mean){
//                break;
//            }
//            i++;
//        }
//        if(sum!=mean){
//            return false;
//        }
//        int j=i+1;
//        while(j+1<len){
//            sum+=arr[j];
//            if(sum==mean*2){
//                return true;
//            }
//            j++;
//        }
//        return false;
//    }
//}









/*
// Definition for Employee.
class Employee {
    public int id;
    public int importance;
    public List<Integer> subordinates;
};
*/

class Solution {
    Map<Integer,Employee> map=new HashMap<Integer,Employee>();//创建一个哈希表
    public int getImportance(List<Employee> employees, int id) {
        for(Employee employee : employees){
            map.put(employee.id,employee);//将每个员工存入哈希表
        }
        return dfs(id);//递归
    }
    public int dfs(int id){
        Employee employee=map.get(id);//保存每个员工的信息
        int sum=employee.importance;//获得每个员工的价值
        List<Integer> list=employee.subordinates;//获得每个员工的下属
        for(int i : list){//遍历下属
            sum+=dfs(i);//递归累计每个下属的价值。
        }
        return sum;
    }
}